package program_structure;

/**
 * @author yuisama
 * @date 2022/08/18 09:33
 * while循环的使用 - 明确循环的终止条件，循环次数不明确
 **/
public class WhileDemo {
    public static void main(String[] args) {
//        // 1.顺序打印1-10的数字
//        int num = 1;
//        // 此时终止循环的条件就是num > 10
//        while (num <= 10) {
//            System.out.println(num ++);
//        }
//        // 2.输出10以内的偶数
//        while (num <= 10) {
//            if (num % 2 == 0) {
//                System.out.println(num);
//                num += 2;
//            }else {
//                num ++;
//            }
//        }
        // 3.计算1-100的值
//        int sum = 0;
//        int num = 1;
//        while (num <= 100) {
//            sum += num;
//            num ++;
//        }
//        System.out.println("1-100的和为 : " + sum);
        // 4.输出从1000-2022年所有的闰年，统计出现了多少次闰年
//        int year = 1000;
//        int num = 0;
//        while (year < 2023) {
//            if (year % 100 == 0) {
//                // 判断世纪闰年
//                if (year % 400 == 0) {
//                    System.out.print(year + "、");
//                    num ++;
//                }

//            }else {
//                // 判断普通闰年
//                if (year % 4 == 0) {
//                    // 普通的输出函数，不加换行
//                    System.out.print(year + "、");
//                    num ++;
//                }
//            }
//            // 代码走到这里，说明当前的year已经判断完毕
//            // 此时year无论是否是闰年，year 都需要++，继续进行下一年的判断
//            year ++;
//        }
//        System.out.println("一共从1000-2022年有 " + num + "个闰年");
        // 5.计算5的阶乘  1*2*3*4*5
//        int num = 1;
//        int sum = 1;
//        while (num <= 5) {
//            sum *= num;
//            num ++;
//        }
//        System.out.println("5的阶乘为 : " + sum);
        // 6.计算1! + 2! + 3! + 4! + 5!
//         =>拆解问题，得有个循环依次从1走到5
//        int num = 1;
//        // 最终求和的数
//        int sum = 0;
//        // 这层循环就是简单的从1 .. 5
//        while (num <= 5) {
//            // ... num ++
//            // 计算一下当前num的阶乘值是多少! => 拆解问题2 在当前这个循环的内部，每当num走到一个新的数值，就计算当前num的阶乘值
//            int tmp = 1;
//            // 当前num的阶乘值
//            int numFactor = 1;
//            // 内层循环就在计算当前这个num的阶乘值
//            while (tmp <= num) {
//                numFactor *= tmp;
//                tmp ++;
//            }
//            // 此时numFactor就存储了每次num的阶乘值
//            sum += numFactor;
//            num ++;
//        }
//        System.out.println("和为 : " + sum);
        // 7.小小分号惹大祸
//        int num = 1;
//        while (num <= 10) {
//            System.out.println(num);
//            num ++;
//        }
//        System.out.println("程序执行结束");
        // 8.break的典型使用  找出100-200中的第一个能把3整除的整数
//        int num = 100;
//        while (num <= 200){
//            if (num % 3 == 0) {
//                System.out.println("找到了第一个能把3整除的整数，为 : " + num);
//                // 使用break结束本次循环
//                break;
//            }
//            num ++;
//        }
        // 9.continue的典型使用  输出100-200之间的所有3的倍数
        int num = 100;
        while (num <= 200) {
            if (num % 3 != 0) {
                // 不是3的倍数
                num ++;
                continue;
            }
            System.out.print(num + "、");
            num ++;
        }
    }
}